/*
 * Armas, no esotoy muy contento con todas estas variables, pero bueno...
 *
 * This is part of the game The Rooms
 * Copyright (C) 2010  Elvio Sarquis
 *
 * Get the GNU GPL v3 in http://www.gnu.org/licenses/
 */

package rooms.items;

/**
 *
 * @author dask
 */
public class Weapon extends Item{

    private int kind;
    private int damagemin;
    private int damagemax;
    private int meleedamagemin;
    private int meleedamagemax;
    private int damagekind;
    private int kindammo;
    private int kindclip;
    private int sizeclip;
    private int RoFSingle;
    private int RoFSemiauto;
    private int RoFFull;
    private int RoFExtended;
    private int hands;

    private int ammo;

    public Weapon(String name, String description, int x, int y, int weight, int price, int color, char symbol, int kind, int damagemin, int damagemax,
            int meleedamagemin, int meleedamagemax, int damagekind, int kindammo, int kindclip, int sizeclip, int RoFSingle, int RoFSemiauto,
            int RoFFull, int RoFExtended, int hands){

        super(name, description, x, y, weight, price, color, symbol);

        this.kind = kind;
        this.damagemin = damagemin;
        this.damagemax = damagemax;
        this.meleedamagemin = meleedamagemin;
        this.meleedamagemax = meleedamagemax;
        this.damagekind = damagekind;
        this.kindammo = kindammo;
        this.kindclip = kindclip;
        this.sizeclip = sizeclip;
        this.RoFSingle = RoFSingle;
        this.RoFSemiauto = RoFSemiauto;
        this.RoFFull = RoFFull;
        this.RoFExtended = RoFExtended;
        this.hands = hands;
    }

    public Weapon(Weapon weapon){

        super((Item) weapon);

        this.kind = weapon.kind;
        this.damagemin = weapon.damagemin;
        this.damagemax = weapon.damagemax;
        this.meleedamagemin = weapon.meleedamagemin;
        this.meleedamagemax = weapon.meleedamagemax;
        this.damagekind = weapon.damagekind;
        this.kindammo = weapon.kindammo;
        this.kindclip = weapon.kindclip;
        this.sizeclip = weapon.sizeclip;
        this.RoFSingle = weapon.RoFSingle;
        this.RoFSemiauto = weapon.RoFSemiauto;
        this.RoFFull = weapon.RoFFull;
        this.RoFExtended = weapon.RoFExtended;
        this.hands = weapon.hands;
    }

    public void decreseAmmo(int howmuch){
        ammo -= howmuch;

        if (ammo < 0) ammo = 0;
    }

// <editor-fold defaultstate="collapsed" desc="Getters">

    public int getKind() {
        return kind;
    }

    public int getDamageMin() {
        return damagemin;
    }

    public int getDamageMax() {
        return damagemax;
    }

    public int getMeleeDamageMin() {
        return meleedamagemin;
    }

    public int getMeleeDamageMax() {
        return meleedamagemax;
    }

    public int getDamageKind() {
        return damagekind;
    }

    public int getKindAmmo() {
        return kindammo;
    }

    public int getKindClip() {
        return kindclip;
    }

    public int getSizeClip() {
        return sizeclip;
    }

    public int getRoFSingle() {
        return RoFSingle;
    }

    public int getRoFSemiauto() {
        return RoFSemiauto;
    }

    public int getRoFFull() {
        return RoFFull;
    }

    public int getRoFExtended() {
        return RoFExtended;
    }

    public int getAmmo() {
        return ammo;
    }

    public int getHands(){
        return hands;
    }// </editor-fold>

// <editor-fold defaultstate="collapsed" desc="Setters">
    public void setKind(int kind) {
        this.kind = kind;
    }

    public void setDamageMin(int damagemin) {
        this.damagemin = damagemin;
    }

    public void setDamageMax(int damagemax) {
        this.damagemax = damagemax;
    }

    public void setMeleeDamageMin(int meleedamagemin) {
        this.meleedamagemin = meleedamagemin;
    }

    public void setMeleeDamageMax(int meleedamagemax) {
        this.meleedamagemax = meleedamagemax;
    }

    public void setDamageKind(int damagekind) {
        this.damagekind = damagekind;
    }

    public void setKindAmmo(int kindammo) {
        this.kindammo = kindammo;
    }

    public void setKindClip(int kindclip) {
        this.kindclip = kindclip;
    }

    public void setSizeClip(int sizeclip) {
        this.sizeclip = sizeclip;
    }

    public void setRoFSingle(int RoFSingle) {
        this.RoFSingle = RoFSingle;
    }

    public void setRoFSemiauto(int RoFSemiauto) {
        this.RoFSemiauto = RoFSemiauto;
    }

    public void setRoFFull(int RoFFull) {
        this.RoFFull = RoFFull;
    }

    public void setRoFExtended(int RoFExtended) {
        this.RoFExtended = RoFExtended;
    }

    public void setAmmo(int ammo) {
        this.ammo = ammo;
    }

    public void setHands(int hands){
        this.hands = (hands>1)?2:1;
    }// </editor-fold>
}
